home *** CD-ROM | disk | FTP | other *** search
/ Speccy ClassiX 1998 / Speccy ClassiX 98.iso / amiga_system / the_aminet / dev / e / jrhrkrm2.lzh / RKRM_PartTwo / Console / AskKeymap.e < prev    next >
Text File  |  1995-09-20  |  2KB  |  66 lines

  1. -> AskKeymap.e
  2.  
  3. ->>> Header (globals)
  4. MODULE 'devices/console',
  5.        'devices/conunit',
  6.        'devices/keymap',
  7.        'exec/io',
  8.        'exec/memory',
  9.        'exec/ports'
  10.  
  11. ENUM ERR_NONE, ERR_DEV, ERR_IO, ERR_PORT
  12.  
  13. RAISE ERR_DEV  IF OpenDevice()<>0,
  14.       ERR_IO   IF CreateIORequest()=NIL,
  15.       ERR_PORT IF CreateMsgPort()=NIL
  16. ->>>
  17.  
  18. ->>> PROC main()
  19. PROC main() HANDLE
  20.   DEF consoleMP:PTR TO mp, consoleIO:PTR TO iostd, keymap:PTR TO keymap,
  21.       i, j, prt, dev_open=FALSE
  22.   -> Release 2 (V36) or a later version of the OS is required
  23.   KickVersion(36)
  24.   -> Create the message port
  25.   consoleMP:=CreateMsgPort()
  26.   -> Create the IORequest
  27.   consoleIO:=CreateIORequest(consoleMP, SIZEOF iostd)
  28.   -> Open Console device
  29.   OpenDevice('console.device', CONU_LIBRARY, consoleIO, 0)
  30.   dev_open:=TRUE
  31.   -> Allocate memory for the keymap
  32.   keymap:=NewM(SIZEOF keymap, MEMF_PUBLIC OR MEMF_CLEAR)
  33.   -> Device opened, send query command to it
  34.   consoleIO.length:=SIZEOF keymap
  35.   -> Where to put it
  36.   consoleIO.data:=keymap
  37.   consoleIO.command:=CD_ASKKEYMAP
  38.   IF DoIO(consoleIO)
  39.     -> Inform user that CD_ASKKEYMAP failed
  40.     WriteF('CD_ASKKEYMAP failed.  Error - \d\n', consoleIO.error)
  41.   ELSE
  42.     -> Print values for top row of keyboard
  43.     prt:=keymap.lokeymap
  44.     WriteF('Result of CD_ASKKEYMAP for top row of keyboard\n\n' +
  45.            '\tShift\n' +
  46.            '\tAlt\tAlt\tShift\tNo Qualifier\n')
  47.     FOR j:=0 TO 13
  48.       FOR i:=0 TO 3 DO WriteF('\t\c', prt[]++)
  49.       WriteF('\n')
  50.     ENDFOR
  51.   ENDIF
  52. EXCEPT DO
  53.   IF keymap THEN Dispose(keymap)
  54.   IF dev_open THEN CloseDevice(consoleIO)
  55.   IF consoleIO THEN DeleteIORequest(consoleIO)
  56.   IF consoleMP THEN DeleteMsgPort(consoleMP)
  57.   SELECT exception
  58.   CASE ERR_DEV;   WriteF('Error: could not open console device\n')
  59.   CASE ERR_IO;    WriteF('Error: could not create I/O\n')
  60.   CASE ERR_PORT;  WriteF('Error: could not create port\n')
  61.   CASE "MEM";     WriteF('Error: ran out of memory\n')
  62.   ENDSELECT
  63. ENDPROC
  64. ->>>
  65.  
  66.